package main

import (
	"fmt"
	"os"
	"path"
	"time"
)

//监控指定盘符 并扫描指定文件  发现后移动到指定路径

type moveFileInfo struct {
	source string //源路径
	goal   string //目的路径
}

//需要移动的文件 完全路径
var MoveFiles = make([]moveFileInfo, 0, 100)

func main() {

	for {
		//循环文件夹
		for _, v := range Folders {
			files, err := os.ReadDir(v.Source)
			if err != nil {
				fmt.Println("文件夹打开失败：", err)
			}
			for _, f := range files {
				if inSuffix(path.Ext(f.Name())) {
					MoveFiles = append(MoveFiles, moveFileInfo{source: v.Source + f.Name(), goal: v.Goal + f.Name()})
				}
			}
		}

		if len(MoveFiles) > 0 {
			fmt.Printf("发现[%d]个文件需要移动\r\n", len(MoveFiles))
			moveFile()
		} else {
			fmt.Println("未发现需要移动的文件")
		}
		time.Sleep(time.Second * time.Duration(Config.Config.Time))
	}
}

//是否存在扩展名
func inSuffix(v string) bool {
	if _, ok := Suffixs[v]; ok {
		return true
	}
	return false
}

//移动文件
func moveFile() {
	fmt.Println("开始移动文件：")
	for k, v := range MoveFiles {
		fmt.Printf("开始移动第[%d]个文件\r\n", k+1)
		fmt.Println("移动：", v.source, "->", v.goal)
		err:=os.Rename(v.source,v.goal)
		if err!=nil{
			fmt.Println("移动文件失败：",err)
		}
		fmt.Printf("第[%d]个文件移动完成\r\n", k+1)
		fmt.Println("===============================================")
	}

	fmt.Println("所有文件移动完成")
	MoveFiles=MoveFiles[0:0]
}
